package com.agile.leetcode.easy.numofword;

/**
 * 统计字符串中的单词个数，这里的单词指的是连续的不是空格的字符。
 * <p>
 * 请注意，你可以假定字符串里不包括任何不可打印的字符。
 * <p>
 * 示例:
 * <p>
 * 输入: "Hello, my name is John"
 * 输出: 5
 * 解释: 这里的单词是指连续的不是空格的字符，所以 "Hello," 算作 1 个单词。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/number-of-segments-in-a-string
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @Author KD
 * @Date 2021/2/4 15:34
 */
public class NumOfWord {
    public static void main(String[] args) {
        NumOfWord word = new NumOfWord();
        int numOfWord = word.getNumOfWord("Hello, my name is John");
        int numOfWord2 = word.getNumOfWord2("Hello, my name is John");
        System.out.println(numOfWord);
        System.out.println(numOfWord2);
    }

    /**
     * 计算单词个数
     *
     * @param str
     * @return
     */
    public int getNumOfWord(String str) {
        // 去除前后空格
        String trim = str.trim();
        // 利用正则来切割
        int length = trim.split("\\s+").length;
        return length;
    }

    /**
     * 计算单词个数2
     *
     * @param str
     * @return
     */
    public int getNumOfWord2(String str) {
        int sum = 0;
        for (int i = 0; i < str.length(); i++) {
            if ((i == 0 || str.charAt(i - 1) == ' ') && str.charAt(i) != ' ') {
                sum++;
            }
        }
        return sum;
    }
}
